As integrated circuits evolve, their complexity and density are increasing. Testing of these integrated circuits and the corresponding firmware is becoming more difficult. To complicate matters, some regions of logic on the integrated circuit are functionally more complex than surrounding logic regions. A microprocessor or a microcontroller embedded in the integrated circuit is an example of a complex logic region.
Access to the data, address or control signals of the embedded device allow the user to attach an analyzer to trace the paths of the embedded device for testing purposes. However, the user may not have access to the signals. Without access to these signals, the user has no way of determining how the embedded device is functioning during testing.
One technique for testing and debugging the firmware and the embedded device, and for testing the other regions of logic contained in the integrated circuit is known as a monitor program. The monitor program monitors the embedded device software. The monitor program, linked with the embedded device software, is located in the integrated circuit's memory, such as read-only memory (ROM). A universal asynchronous receiver-transmitter (UART) or equivalent circuitry is typically required for communication between the integrated circuit and user test hardware. The communication is typically provided over a serial interface, e.g. RS232.
Many disadvantages exist in using a monitor program. The monitor program requires the integrated circuit's memory, either for data or programs; has to be linked with the embedded device software; is usually hard-coded and thus cannot be easily modified; the serial interface is inherently slow compared to other communication speeds; usually cannot detect complicated "bugs"; and is capable of only debugging the embedded device software. In particular, the amount of memory required for a monitor program can be about 1K-2K. This adds a cost to the product that customers are not willing to pay.
Another technique provides an in-circuit emulator (ICE) in the integrated circuit. The ICE duplicates and imitates behavior of the integrated circuit by executing software coded for the integrated circuit. An ICE monitor external to the integrated circuit generates ICE test signals that are output to the integrated circuit. In response, the ICE monitor receives signals from the ICE for evaluation.
The use of the ICE is not without several disadvantages. The ICE can require extra circuitry on the integrated circuit, and must be functionally designed into the logic of the integrated circuit. As a consequence, design time and cost, and chip area increase. Moreover, external communication to the ICE is conventionally achieved through a set of dedicated ICE pins. However, the pins of an integrated circuit are becoming more of a premium as density and complexity increase, making dedicated ICE pins infeasible.
In light of the above discussion, there exists a need for a debug capability for firmware of an embedded device that minimizes cost. The present invention meets this need.